<?php
/**
 * Implenta las funciones necesarias para gestionar cristal
 *
 * @author Daniel Cardoza, Gary Dos Santos, Freddy Rodriguez
 */
class DBCristalDAO {

    private $DBConn = null;

    public function  __construct() {
        $conexion = new conexion();
        $this->DBConn = $conexion->setConnect();
    }

     /**
     *Devuelve el precio del id del cristal que entra por parametro
     *
     * @param <int> $id
     * @return <int> $fila['CCR_PRECIO']
     * @return <bool> false
     * @test
     *
     */
    public function getPrecio( $id ) {
        $this->DBConn->consulta( "SELECT CCR_PRECIO
                                FROM costo_cristal
                                WHERE CCR_ID = $id
                                AND CCR_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila['CCR_PRECIO'];
        } else {
            return false;
        }

    }

         /**
     *Devuelve el precio del id del accesorio que entra por parametro y del espesor,
     * este espesori es el id del la fila que contiene el espesor
     *
     * @param <int> $id
     * @param <int> $color
     * @return <Array> $fila
     * @return <bool> false
     * @test
     *
     */
    public function getPrecioPorEspesor( $id , $espesor ) {
        $this->DBConn->consulta( "SELECT CCR_PRECIO
                                FROM costo_cristal
                                WHERE CCR_COLOR IN(
                                SELECT CCR_COLOR
                                FROM costo_cristal
                                WHERE CCR_ID = $id)
                                AND CCR_NOMBRE IN(
                                SELECT CCR_NOMBRE
                                FROM costo_cristal
                                WHERE CCR_ID = $id)
                                AND CCR_ESPESOR IN (
                                SELECT PVC_ESPESOR
                                FROM puerta_ventana_cristal
                                WHERE PVC_ID = $espesor)
                                AND CCR_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila;
        } else {
            return false;
        }

    }

    /**
     * Setea un bloque con la informacion del cristal
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockNombre( $plantillaCON , $block ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT CCR_ID, CCR_NOMBRE
                            FROM costo_cristal
                            WHERE CCR_STATUS = 1
                            GROUP BY CCR_NOMBRE" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

        /**
     * Setea un bloque con la informacion del color del cristal
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockColor( $plantillaCON , $block, $id ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT CCR_ID, CCR_COLOR
                            FROM costo_cristal
                            WHERE CCR_NOMBRE IN (
                            SELECT CCR_NOMBRE
                            FROM costo_cristal
                            WHERE CCR_ID = $id)
                            GROUP BY CCR_COLOR" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

     /**
     * Setea un bloque con la informacion del espesor del cristal
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockEspesor( $plantillaCON , $block, $id ) {

        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT CCR_ID, CCR_ESPESOR
                            FROM costo_cristal
                            WHERE CCR_NOMBRE IN (
                            SELECT CCR_NOMBRE
                            FROM costo_cristal
                            WHERE CCR_ID = $id)
                            AND CCR_COLOR IN (
                            SELECT CCR_COLOR
                            FROM costo_cristal
                            WHERE CCR_ID = $id)" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

     /**
     * Setea un bloque con la informacion de esmerilado
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockEsmerilado( $plantillaCON , $block ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT *
                            FROM costo_trabajos_varios
                            WHERE CTV_TIPO = 3
                            AND CTV_STATUS = 1" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

     /**
     * Setea un bloque con la informacion del bisel
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockBisel( $plantillaCON , $block ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT *
                            FROM costo_trabajos_varios
                            WHERE CTV_TIPO = 4
                            AND CTV_STATUS = 1" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

     /**
     *Devuelve el color del id del cristal que entra por parametro
     *
     * @param <int> $id
     * @return <string> $fila['CCR_COLOR']
     * @return <bool> false
     * @test
     *
     */
    public function getColor( $id ) {
        $this->DBConn->consulta( "SELECT CCR_COLOR
                            FROM costo_cristal
                            WHERE CCR_ID = $id
                            AND CCR_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila['CCR_COLOR'];
        } else {
            return false;
        }

    }

     /**
     *Devuelve el nombre del id del cristal que entra por parametro
     *
     * @param <int> $id
     * @return <string> $fila['CCR_NOMBRE']
     * @return <bool> false
     * @test
     *
     */
    public function getNombre( $id ) {
        $this->DBConn->consulta( "SELECT CCR_NOMBRE
                            FROM costo_cristal
                            WHERE CCR_ID = $id
                            AND CCR_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila['CCR_NOMBRE'];
        } else {
            return false;
        }

    }

     /**
     *Devuelve el espesor del id del cristal que entra por parametro
     *
     * @param <int> $id
     * @return <string> $fila['CCR_ESPESOR']
     * @return <bool> false
     * @test
     *
     */
    public function getEspesor( $id ) {
        $this->DBConn->consulta( "SELECT CCR_ESPESOR
                            FROM costo_cristal
                            WHERE CCR_ID = $id
                            AND CCR_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila['CCR_ESPESOR'];
        } else {
            return false;
        }

    }

     /**
     *Insertar un Cristal en la base de datos y lo asigna al id del presupuesto
     * que se pasa por parametro
     *
     * @param <Cristal> $cristal
     * @param <int> $PTO_ID
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function setCristal( Cristal $cristal , $PTO_ID ) {
        $alto = $cristal->getAlto();
        $ancho = $cristal->getAncho();
        $cantidad = $cristal->getCantidad();
        $color = $cristal->getColor();
        $nombre = $cristal->getNombre();
        $precio = $cristal->getPrecio();
        $espesor  = $cristal->getEspesor();
        $subTotal  = $cristal->calcularSubTotal();

        $this->DBConn->consulta( "INSERT INTO `cristal` (`CRT_NOMBRE`, `CRT_COLOR`, `CRT_ESPESOR`,
                                `CRT_ANCHO`, `CRT_ALTO`, `CRT_PRECIO`,`CRT_CANTIDAD`)
                                VALUES ('$nombre', '$color', $espesor, $ancho, $alto,
                                $precio, $cantidad);" );

        $this->DBConn->consulta( "SELECT CRT_ID FROM Cristal
                        WHERE CRT_NOMBRE = '$nombre'
                        AND CRT_COLOR = '$color'
                        AND CRT_ESPESOR = $espesor
                        AND CRT_ANCHO = $ancho
                        AND CRT_ALTO = $alto
                        AND CRT_PRECIO = $precio
                        AND CRT_CANTIDAD = $cantidad
                        AND CRT_STATUS = 1
                        ORDER BY CRT_ID DESC " );

        $fila = $this->DBConn->extraer_registro();
            $id = $fila[ 'CRT_ID' ];

        $subTotal = $cristal->calcularSubTotal();
        $this->DBConn->consulta( "INSERT INTO detalle_presupuesto (DPR_SUB_TOTAL,DPR_PTO_ID,DPR_CRT_ID)
                                VALUES ($subTotal, $PTO_ID, $id)" );

        if ( $this->DBConn->filasAfectadas() != -1){
            return true;
        } else {
            return false;
        }

    }

}
?>